package com.csx.kotlndemo.viewmodel;

import android.app.Application;

import androidx.annotation.NonNull;
import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.Observer;

/**
 * BaseViewModel
 * 1，LiveData几大好处：在组件处于激活状态的时候才回调相应方法，从而刷新ui。
 * 2，不用担心内存泄露。
 * 3，当config配置发生改变导致Activity重新创建，不需要处理数据的存储与恢复，LiveData已经封装好了。
 * 4，当Activity处于非激活状态，仍然想立即回调Observer的onChange()方法，而不用等到激活时再回调，可以使用ObserveForever
 * 但是onDestory必须使用removeObserver()。
 */
public abstract class BaseViewModel extends AndroidViewModel {

    /**错误的时候使用该LiveData*/
    MutableLiveData<Object> errLiveData=new MutableLiveData<>();

    public BaseViewModel(@NonNull Application application) {
        super(application);
    }

    public abstract <T> MutableLiveData<T> getData();

    /**
     * 获取错误信息
     * @param owner  生命周期所有者
     * @param observer 观察者
     */
    public void getError(LifecycleOwner owner, Observer<Object> observer){
        errLiveData.observe(owner,observer);
    }

}
